#ifndef AAC_DECODER_H
#define AAC_DECODER_H
#include "AV_Common.h"
#include <QThread> //线程头文件
#include "AudioResampler.h"



class AAC_Decoder : public QThread //继承线程，重写run启动线程
{
public:
    AAC_Decoder(AVContext* avc,QObject* parent = nullptr);
    ~AAC_Decoder();//析构函数
public:
    int Open(const AVCodecParameters* codecParmer);//初始化音频解码器
    inline void put_packet(const AVPacketPtr packet){audio_queue_.push(packet);}//由解封装对象来去调用，添加编码数据
    inline bool isFull(){return audio_queue_.size() > 50;}//根据音频队列时长来去判断
protected:
    void Close();
    virtual void run() override;
    private:
    bool quit_= false;
        AVContext* avContext_= nullptr;
    //添加音频编码队列
        AVQueue<AVPacketPtr> audio_queue_;
        //成员变量的时候一定要规范 m_dddd audio_
        //驼峰命名 videoQueue
        //添加重采样对象
        AVCodec* codec_= nullptr;
        AVCodecContext* codecContext_ = nullptr;
        std::unique_ptr<AudioResampler> audioResampler_ = nullptr;
};

#endif // AAC_DECODER_H
